home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / wemdemo4.zip / INFO / W3.3 (.txt) < prev    next >
GNU Info File  |  1994-09-21  |  48KB  |  877 lines

  1. This is Info file ../info/w3, produced by Makeinfo-1.56 from the input
  2. file w3.txi.
  3.    This file documents the Emacs-w3 World Wide Web browser.
  4.    Copyright (C) 1993, 1994 William M. Perry
  5.    Permission is granted to make and distribute verbatim copies of this
  6. manual provided the copyright notice and this permission notice are
  7. preserved on all copies.
  8. File: w3,  Node: Using PGP/PEM,  Next: Native WAIS Support,  Prev: Interfacing to GNUS,  Up: Advanced Features
  9. Using PGP/PEM
  10. =============
  11.    Most of this section was taken from the documentation written by Rob
  12. McCool robm@ncsa.uiuc.edu.  Gratefully reproduced here with permission
  13. from him.(1).
  14.    RIPEM is 'Riordan's Internet Privacy Enhanced Mail', and is
  15. currently on version 1.2b3.  If you are a US citizen, you can ftp it
  16. from ripem.msu.edu:/pub/crypt/ripem.
  17.    PGP is 'Pretty Good Privacy', and is currently on version 2.6.  The
  18. legal controversies that plagued earlier versions have been resolved, so
  19. this is a competely legal program now.  There is also a legal version
  20. for eurpoean users, called 2.6ui (the Unofficial International version).
  21.    PGP and PEM are programs to allow you and a second party to
  22. communicate in a way which does not allow third parties to read them,
  23. and which certify that the person who sent the message is really who
  24. they claim they are.
  25.    PGP and PEM both use RSA encryption.  The U.S.  government has strict
  26. export controls over foreign use of this technology, so people outside
  27. the U.S.  may have a difficult time finding programs which perform the
  28. encryption.
  29.    You will need a working copy of either Pretty Good Privacy or RIPEM
  30. to begin with.  You should be familiar with the program and have
  31. generated your own public/private key pair.  You should be able to use
  32. the TIS/PEM program with the PEM authorization type.  I haven't tried
  33. it.  This tutorial is written assuming that you are using RIPEM.
  34.    Currently, the protocol has been implemented with PEM and PGP using
  35. local key files on the server side, and on the client side with PEM
  36. using finger to retrieve the server's public key.
  37.    As you can tell, parties who wish to use Emacs-w3 and httpd with PEM
  38. or PGP encryption will need to communicate beforehand and find a
  39. tamper-proof way to exchange their public keys.
  40.    Pioneers get shot full of arrows.  This work is currently in the
  41. experimental stages and thus may have some problems that I have
  42. overlooked.  The only known problem that I know about is that the
  43. messages are currently not timestamped.  This means that a malicious
  44. user could record your encrypted message with a packet sniffer and
  45. repeat it back to the server ad nauseum.  Although they would not be
  46. able to read the reply, if the request was something you were being
  47. charged for, you may have a large bill to pay by the time they're
  48. through.
  49.    This protocol is almost word-for-word a copy of Tony Sander's RIPEM
  50. based scheme, generalized a little.  Below, wherever you see PEM you can
  51. replace it with PGP and get the same thing.
  52.      *Client:*
  53.      
  54.      GET /docs/protected.html HTTP/1.0
  55.      UserAgent: Emacs-W3/2.1.x
  56.      
  57.      *Server:*
  58.      
  59.      HTTP/1.0 401 Unauthorized
  60.      WWW-Authenticate: PEM entity="webmaster@hoohoo.ncsa.uiuc.edu"
  61.      Server: NCSA/1.1
  62.      
  63.      *Client:*
  64.      
  65.      GET / HTTP/1.0
  66.      Authorization: PEM entity="robm@ncsa.uiuc.edu"
  67.      Content-type: application/x-www-pem-request
  68.      
  69.      --- BEGIN PRIVACY-ENHANCED MESSAGE ---
  70.      this is the real request, encrypted
  71.      --- END PRIVACY-ENHANCED MESSAGE ---
  72.      
  73.      *Server:*
  74.      
  75.      HTTP/1.0 200 OK
  76.      Content-type: application/x-www-pem-reply
  77.      
  78.      --- BEGIN PRIVACY-ENHANCED MESSAGE ---
  79.      this is the real reply, encrypted
  80.      --- END PRIVACY-ENHANCED MESSAGE ---
  81.      That's it.
  82.    Emacs-w3 uses the excellent mailcrypt package written by Jin S Choi
  83. jsc@mit.edu.(2).  This package takes care of calling ripem and/or pgp
  84. with the correct arguments.  Please see the documentation at the top of
  85. mailcrypt.el for instructions on using mailcrypt.  All bug reports
  86. about mailcrypt should go to Jin S Choi, but bugs about how I use it in
  87. Emacs-w3 should of course be directed to me.
  88.    ---------- Footnotes ----------
  89.    (1)  See http://hoohoo.ncsa.uiuc.edu/docs/PEMPGP.html
  90.    (2)  Available via anonymous ftp to
  91. archive.cis.ohio-state.edu:/pub/gnu/emacs/elisp-archive/interfaces/mailcrypt.el.Z
  92. File: w3,  Node: Native WAIS Support,  Next: Rating Links,  Prev: Using PGP/PEM,  Up: Advanced Features
  93. Native WAIS Support
  94. ===================
  95.    :: WORK ::
  96. File: w3,  Node: Rating Links,  Next: Gopher Plus Support,  Prev: Native WAIS Support,  Up: Advanced Features
  97. Rating Links
  98. ============
  99.    The `w3-link-delimiter-info' variable can be used to 'rate' a URL
  100. when it shows up in an HTML page.  If non-`nil', then this should be a
  101. list specifying (or a symbol specifying the name) of a function.  This
  102. function should expect one argument, a fully specified URL, and should
  103. return a string.  This string is inserted after the link text.
  104.    If a user has decided that all links served from blort.com are too
  105. laden with images, and wants to be warned that a link points at this
  106. host, they could do something like this:
  107.      (defun check-url (url)
  108.        (if (string-match "://[^/]blort.com" url)
  109.           "[SLOW!]" ""))
  110.      
  111.      (setq w3-link-delimiter-info 'check-url)
  112.    So that all links pointing to any site at blort.com shows up as "Some
  113. link[SLOW!]" instead of just "Some link".
  114. File: w3,  Node: Gopher Plus Support,  Next: Hooks,  Prev: Rating Links,  Up: Advanced Features
  115. Gopher+ Support
  116. ===============
  117.    :: WORK ::
  118. File: w3,  Node: Hooks,  Next: Other Variables,  Prev: Gopher Plus Support,  Up: Advanced Features
  119. Hooks
  120. =====
  121.    These are the various hooks you can use to customize some of
  122. Emacs-w3s behavior.  They are arranged in the order in which they would
  123. happen when retrieving a document.  All of these are functions (or
  124. lists of functions) that are called consecutively.
  125. `w3-load-hooks'
  126.      These hooks are run by `w3-do-setup' the first time a URL is
  127.      fetched.  All the w3 variables are initialized before this hook is
  128.      run.
  129. `w3-file-done-hooks'
  130.      These hooks are run by `w3-prepare-buffer' after all parsing on a
  131.      document has been done.  All `url-current-'* and `w3-current-'*
  132.      variables are initialized when this hook is run.  This is run
  133.      before the buffer is shown, and before any inlined images are
  134.      downloaded and converted.
  135. `w3-file-prepare-hooks'
  136.      These hooks are run by `w3-prepare-buffer' before any parsing is
  137.      done on the HTML file.  The HTTP/1.0 headers specified by
  138.      `w3-show-headers' have been inserted, the syntax table has been set
  139.      to `w3-parse-args-syntax-table', and any personal annotations have
  140.      been inserted by the time this hook is run.
  141. `w3-mode-hooks'
  142.      These hooks are run after a buffer has been parsed and displayed,
  143.      but before any inlined images are downloaded and converted.
  144. File: w3,  Node: Other Variables,  Prev: Hooks,  Up: Advanced Features
  145. Miscellaneous variables
  146. =======================
  147.    There are lots of variables that control the real nitty-gritty of
  148. Emacs-w3 that the beginning user probably shouldn't mess with.  Here
  149. they are.
  150. `w3-icon-directory-list'
  151.      A list of directorys to look in for the w3 standard icons...  must
  152.      end in a /!  If the directory `data-directory'/w3 exists, then
  153.      this is automatically added to the default value of
  154.      http://cs.indiana.edu/elisp/w3/icons/.
  155. `w3-keep-old-buffers'
  156.      Whether to keep old buffers around when following links.  If you
  157.      do not like having lots of buffers in one Emacs session, you
  158.      should set this to `nil'.  I recommend setting it to `t', so that
  159.      backtracking from one link to another is faster.
  160. `url-passwd-entry-func'
  161.      This is a symbol indicating which function to call to read in a
  162.      password.  It is set up depending on whether you are running "EFS"
  163.      or "ange-ftp" at startup if it is `nil'.  This function should
  164.      accept the prompt string as its first argument, and the default
  165.      value as its second argument.
  166. `w3-reuse-buffers'
  167.      Determines what happens when `w3-fetch' is called on a document
  168.      that has already been loaded into another buffer.  Possible values
  169.      are: `nil', `yes', and `no'.  `nil' will ask the user if Emacs-w3
  170.      should reuse the buffer (this is the default value).  A value of
  171.      `yes' means assume the user wants to always reuse the buffer.  A
  172.      value of `no' means assume the user always wants to re-fetch the
  173.      document.
  174. `w3-show-headers'
  175.      This is a list of HTTP/1.0 headers to show at the end of a buffer.
  176.      All the headers should be in lowercase.  They is inserted at the
  177.      end of the buffer in a <UL> list.  Alternatively, if this is
  178.      simply `t', then all the HTTP/1.0 headers are shown.
  179. `w3-show-status, url-show-status'
  180.      Whether to show progress messages in the minibuffer.
  181.      `w3-show-status' controls if messages about the parsing are
  182.      displayed, and `url-show-status' controls if a running total of the
  183.      number of bytes transferred is displayed.  These Can cause a large
  184.      performance hit if using a remote X display over a slow link, or a
  185.      terminal with a slow modem.
  186. `url-uncompressor-alist'
  187.      An assoc list of file extensions and the appropriate uncompression
  188.      programs for each.  This is used to build the Accept-encoding
  189.      header for HTTP/1.0 requests.
  190. `url-waisq-prog'
  191.      Name of the waisq executable on this system.  This should be the
  192.      `waisq' program from think.com's wais8-b5.1 distribution.
  193. File: w3,  Node: More Help,  Next: Future Directions,  Up: Top
  194. More Help
  195. *********
  196.    If you need more help on Emacs-w3, please send me mail
  197. (wmperry@spry.com).  Several discussion lists have also been created
  198. for Emacs-w3.  To subscribe, send mail to
  199. <listname>-request@indiana.edu.  All other mail should go to
  200. <listname>@indiana.edu.
  201.    * w3-announce - this list is for anyone interested in Emacs-w3, and
  202.      should in general only be used by me.  The gnu.emacs.sources
  203.      newsgroup and a few other mailing lists are included on this.  You
  204.      may use this if you have written an enhancement to Emacs-w3 that
  205.      you wish more people to know about.  (www-announce@info.cern.ch is
  206.      included on this list).
  207.    * w3-beta - this list is for beta testers of Emacs-w3.  These brave
  208.      souls test out not-quite stable code.
  209.    * w3-dev - a list consisting of myself and a few other people who are
  210.      interested in the internals of Emacs-w3, and doing active
  211.      development work.  Pretty dead right now, but I hope it will grow.
  212.    If you need more help on the World Wide Web in general, please refer
  213. to the newsgroup comp.infosystems.www.  There are also several
  214. discussion lists concerning the Web.  Send mail to
  215. listserv@info.cern.ch with a subject line of 'subscribe <listname>'.
  216. All mail should go to <listname>@info.cern.ch.  Administrative mail
  217. should go to www-admin@info.cern.ch.  The lists are:
  218.    * www-talk - for general discussion of the World Wide Web, where its
  219.      going, new features, etc.  All the major developers are subscribed
  220.      to this list.
  221.    * www-announce - for announcements concerning the World Wide Web.
  222.      Server changes, new servers, new software, etc.
  223.    As a last resort, you may always mail me.  I'll try to answer as
  224. quickly as I can.
  225. File: w3,  Node: Future Directions,  Next: Programming Interface,  Prev: More Help,  Up: Top
  226. Future Directions
  227. *****************
  228.    Changes are constantly being made to the Emacs browser (hopefully all
  229. for the better).  This is a list of the things that are being worked on
  230. right now.
  231.      Fix before 2.3
  232.        1. Finish the native WAIS support.
  233.        2. New display engine
  234.        3. Correct imagemap capabilities.
  235.        4. Imagemap extensions (drag areas)
  236.        5. PATHs
  237.        6. TABLEs
  238.      Long range goals
  239.        1. Multi-DTD browsing
  240.        2. Style sheets
  241. File: w3,  Node: Programming Interface,  Next: Generalized ZONES,  Prev: Future Directions,  Up: Top
  242. Internals of Emacs-w3
  243. *********************
  244.    This chapter attempts to explain some of the internal workings of
  245. Emacs-w3 and various data structures that are used.  It also details
  246. some functions that are useful for using some of the Emacs-w3
  247. functionality from within your own programs, or extending the current
  248. capabilities of Emacs-w3.
  249. * Menu:
  250. * Generalized ZONES::           A generic interface to 'zones' of text
  251.                                 that can contain information.
  252. * Global Variables::            Global variables used throughout Emacs-w3
  253. * Data Structures::             The various data structures used in Emacs-w3
  254. * Miscellaneous Functions::     Miscellaneous functions you can use to
  255.                                 interface with w3 and access its data
  256.                                 structures
  257. * MIME functions::              MIME functions--parsing messages,
  258.                                 mailcap files, and more.
  259. File: w3,  Node: Generalized ZONES,  Next: Global Variables,  Prev: Programming Interface,  Up: Programming Interface
  260.    Programming Interface
  261. Generalized ZONES
  262. =================
  263.    Due to the many different flavors of Emacs in existence, the
  264. addition of data and font information to arbitrary regions of text has
  265. been generalized.  The following functions are defined for
  266. using/manipulating these "zones" of data.
  267. `w3-add-zone (start end style data &optional highlight)'
  268.      This function creates a zone between buffer positions start and
  269.      end, with font information specified by style, and a data segment
  270.      of data.  If the optional argument highlight is non-`nil', then
  271.      the region highlights when the mouse moves over it.
  272. `w3-zone-at (point)'
  273.      Returns the the zone at POINT.  Preference is given to hypertext
  274.      links, then to form entry areas, then to inlined images.  So if an
  275.      inlined image was part of a hypertext link, this would always
  276.      return the hypertext link.
  277. `w3-zone-data (zone)'
  278.      Returns the zone's data segment. The data structures used in
  279.      Emacs-w3 are relatively simple.  They are just list structures
  280.      that follow a certain format.  The two main data types are "form
  281.      objects", "link objects",and "inlined images".  All the
  282.      information for these types of links are stored as lists.
  283. `w3-zone-hidden-p (zone)'
  284.      Returns `t' if and only if a zone is currently invisible.
  285. `w3-hide-zone (start end)'
  286.      Makes a region of text from `start' to `end' invisible.
  287. `w3-unhide-zone (start end)'
  288.      Makes a region of text from `start' to `end' visible again.
  289. `w3-zone-start (zone)'
  290.      Returns an integer that is the start of zone, as a buffer
  291.      position.  In Emacs 18.xx, this returns a marker instead of an
  292.      integer, but it can be used just like an integer.
  293. `w3-zone-end (zone)'
  294.      Returns an integer that is the end of zone, as a buffer position.
  295.      In Emacs 18.xx, this returns a marker instead of an integer, but
  296.      it can be used just like an integer.
  297. `w3-zone-eq (zone1 zone2)'
  298.      Returns `t' if and only if zone1 and zone2 represent the same
  299.      region of text in the same buffer, with the same properties and
  300.      data.
  301. `w3-delete-zone (zone)'
  302.      Removes zone from its buffer (or current buffer).  The return
  303.      value is irrelevant, and varies for each version of Emacs.
  304. `w3-all-zones ()'
  305.      Returns a list of all the zones contained in the current buffer.
  306.      Useful for extracting information about hypertext links or form
  307.      entry areas.  Programs should not rely on this list being sorted,
  308.      as the order varies with each version of Emacs.
  309. `w3-zone-at (pt)'
  310.      This returns the zone at character position PT in the current
  311.      buffer that is either a link or a forms entry area.  Returns `nil'
  312.      if no link at point.  These data structures are what is generally
  313. returned by `w3-zone-data'.
  314. File: w3,  Node: Global Variables,  Next: Data Structures,  Prev: Generalized ZONES,  Up: Programming Interface
  315. Global variables
  316. ================
  317.    There are also some variables that may be useful if you are writing a
  318. program or function that interacts with Emacs-w3.  All of the
  319. `w3-current-*' variables are local to each buffer.
  320. `w3-current-mime-headers'
  321.      An assoc list of all the MIME headers for the current document.
  322.      Keyed on the lowercase MIME header (e.g., `content-type' or
  323.      `content-encoding'.
  324. `w3-current-server'
  325.      Server that the current document was retrieved from.
  326. `w3-current-file'
  327.      Filename of the current document
  328. `w3-current-type'
  329.      A string representing what network protocol was used to retrieve
  330.      the current buffer's document.  Can be one of http, gopher, file,
  331.      ftp, news, or mailto.
  332. `w3-current-port'
  333.      Port # of the current document.
  334. `w3-current-last-buffer'
  335.      The last buffer seen before this one.
  336. `w3-running-FSF19'
  337.      This is `t' if and only if we are running in FSF Emacs 19.
  338. `w3-running-epoch'
  339.      This is `t' if and only if we are running in Epoch 4.x
  340. `w3-running-lemacs'
  341.      This is `t' if and only if we are running in Lucid Emacs 19.6 or
  342.      Lucid Emacs 19.8.
  343. `w3-running-new-lucid'
  344.      This is `t' if and only if we are running in Lucid Emacs 19.9 or
  345.      later.
  346. File: w3,  Node: Data Structures,  Next: Miscellaneous Functions,  Prev: Global Variables,  Up: Programming Interface
  347. Data Structures
  348. ===============
  349.    Form objects are used to store information about a FORM data entry
  350. area.
  351.   1. `'w3form'
  352.   2. A cons pair of (METHOD . URL), where METHOD specifies what method
  353.      to use to retrieve the form when it is submitted (e.g., `GET') and
  354.      URL is a fully specified URL pointing at where to submit the FORM
  355.      data to.
  356.   3. The type of input area this is.  (e.g., `CHECKBOX' or `RADIO')
  357.   4. The name of the input tag.  This is used when sending the form to
  358.      the server, so that the server can tell what data is what.
  359.   5. The default value of the input area.  Gotten from the INPUT tag at
  360.      creation time.
  361.   6. The current value of the input area.
  362.   7. Whether the item is checked or not.  Only used for RADIO or
  363.      CHECKBOX items.
  364.   8. The size (in characters) of the input area.  Not used for CHECKBOX,
  365.      RADIO, or TEXTAREA input areas.
  366.   9. The maximum length of the input.  Only used for TEXT or PASSWORD
  367.      input areas.
  368.  10. The form that this input area belongs to.  Each form in the same
  369.      buffer has a unique identifier assigned when the document is
  370.      parsed.  It is used when the form is submitted to get only the
  371.      data for the correct form.
  372.  11. A list of strings that represent the choices for this input area.
  373.      Only used for SELECT tags.
  374.    A new development in the World Wide Web is the concept of collapsible
  375. areas of text.  If a zone controls one of these regions, it is marked
  376. with the w3expandlist property.  The format of this structure is:
  377.   1. `'w3expandlist'
  378.   2. A marker representing the start of the hidden text as a buffer
  379.      position.
  380.   3. A marker representing the end of the hidden text as a buffer
  381.      position.
  382.    A zone with the w3graphic property is a link to an inlined image's
  383. source file.
  384.   1. `'w3graphic'
  385.   2. The full URL of the inlined image.  This is only ever returned if
  386.      the inlined image is the only extent under point, or
  387.      `w3-follow-inlined-image' is invoked.
  388.    A zone with the w3 property is a full-fledged hypertext link to
  389. another document.
  390.   1. `'w3'
  391.   2. The ID attribute of this link.  Used for resolving references to
  392.      specific points within a document (e.g., `file.html#sectionA'.
  393.   3. The HREF attribute of this link.  This is a fully specified URL
  394.      pointing at a network resource.  All relative directory references
  395.      should have been removed before being stored in this structure.
  396.   4. The text between the <A> and </A> tags.  This is used to build
  397.      menus or to get the text of a link without doing a
  398.      buffer-substring.
  399.   5. The URN attribute of this link.  Currently not used for anything,
  400.      waiting for the URN specification to be hammered out.
  401.   6. The REL attribute of this link.  Specifies the links relevance to
  402.      the current document.
  403.   7. The REV attribute of this link.  Specifies the current documents
  404.      relevance to the link.
  405.   8. The METHODS attribute, which tells what methods can be used on this
  406.      link.  (e.g., `GET, HEAD, PUT'.
  407. File: w3,  Node: Miscellaneous Functions,  Next: MIME functions,  Prev: Data Structures,  Up: Programming Interface
  408. Miscellaneous Functions
  409. =======================
  410.    I have done quite a bit of work trying to make a semi-clean
  411. interface to the internals of Emacs-w3.  Here is a list of functions
  412. that you can use to take advantage of the World Wide Web.
  413. `w3-clear-tmp-buffer'
  414.      Sets the current buffer to be `w3-working-buffer', creating it if
  415.      necessary, and erase it.  This should usually be called before
  416.      retrieving URLs.
  417. `w3-convert-html-to-latex'
  418.      Takes a buffer of HTML markup (which should be in
  419.      `w3-working-buffer'), and convert it into LaTeX.  This is an
  420.      adaptation of the simple sed scripts from Cern.  Does as good a
  421.      job as the html2latex program, and I usually prefer its formatting
  422.      over html2latex's.
  423. `w3-fetch'
  424.      This function takes a URL as its only argument. It then attempts to
  425.      retrieve the URL using the specified method, using data (if any)
  426.      as the body of the MIME request.  For example: `(w3-fetch
  427.      "http://cs.indiana.edu/")' would retrieve the Indiana University
  428.      CS home page and parse it as HTML.
  429. `w3-fix-entities-in-string'
  430.      This function takes a string, and removes all HTML[+] entity
  431.      references from it, replacing them with the correct character(s).
  432.      It consults the variable `w3-html-entities' for the entity names
  433.      and translations.  For example, `(w3-fix-entities-in-string
  434.      ">testing<&")' would return `">testing<&"'.
  435. `w3-generate-new-buffer-name'
  436.      This function takes a string, and returns the first unique buffer
  437.      name using that string as a base.  For example
  438.      `(w3-generate-new-buffer-name "new-buff")' would return
  439.      `"new-buff<1>"' if buffer `new-buff' already existed.
  440. `w3-generate-unique-filename'
  441.      This functions returns a string that represents a unique filename
  442.      in the /tmp directory.  For example,
  443.      `(w3-generate-unique-filename)' would return
  444.      `"/tmp/w3-tmp129440"'.  The filename is arrived at by using a
  445.      unique prefix (w3-tmp), the uid of the current user (12944 in my
  446.      case), and a number that is incremented if a file already exists.
  447. `w3-buffer-visiting (url)'
  448.      Return the name of a buffer (if any) that is visiting URL.
  449. `w3-create-mime-request (fname ref-url)'
  450.      Create a MIME request for the file fname.  The Referer: field of
  451.      the HTTP/1.0 request is set to the value of ref-url if necessary.
  452.      Returns a string that can be sent to an HTTP server.  The request
  453.      uses several variables that control how the request looks.
  454.      If the value of `url-current-server' is found in the assoc list of
  455.      `url-bad-server-list', then the basic HTTP/0.9 request type is
  456.      used.  This loses lots of information and server-side typing of
  457.      files, but it is necessary for some older HTTP/0.9 servers that
  458.      can't understand the newer, longer HTTP/1.0 requests.
  459.      If the value of `url-request-extra-headers' is non-`nil', then it
  460.      is used as extra MIME headers when an HTTP/1.0 request is created.
  461. `url-get-url-at-point'
  462.      This function returns the url at a point specified by an optional
  463.      argument.  If no argument is given to the function (point) is used.
  464.      Tries to find the url closest to that point, but does not change
  465.      the users position in the buffer.  Has a preference for looking
  466.      backward when not directly on a URL.
  467. `w3-hexify-string'
  468.      This function takes a string and replaces any characters that are
  469.      not acceptable in a URL with the "escaped" encoding that is
  470.      standard for URLs (replaces the character with a % followed by the
  471.      hexadecimal representation of the ASCII value of the character).
  472.      For example, `(w3-hexify-string "this is a test")' would return
  473.      `"this%20is%20a%20test"'.
  474. `w3-insert-entities-in-string'
  475.      This function takes a string and replaces any occurences of HTML[+]
  476.      reserved characters with the corresponding entity definitions.  For
  477.      example, `(w3-insert-entities-in-string "<testing>")' would return
  478.      `"<testing>"'.
  479. `url-open-stream'
  480.      This function takes the same parameters as `open-network-stream',
  481.      and functions similarly.  It takes a process name, a buffer name,
  482.      a host name, and a port number or server name.  It attempts to
  483.      open a network connection to the remote host on the specified
  484.      port/service name, with output going to the buffer.  It returns
  485.      the process object that is the network connection.
  486. `url-retrieve'
  487.      This function takes 3 arguments, a URL, a method type, and a data
  488.      block.  It then attempts to retrieve the URL using the specified
  489.      method, using data (if any) as the body of the MIME request.  For
  490.      example: `(w3-fetch "http://cs.indiana.edu/" "GET" nil)' would
  491.      retrieve the Indiana University CS home page.  This function does
  492.      no parsing of the retrieved page, and leaves you in the buffer
  493.      containing the document you requested.  Any HTTP/1.0
  494.      redirection/authorization is done before this function exits.
  495. `w3-unhex-string'
  496.      This is the opposite of `w3-hexify-string'.  It removes any %XXX
  497.      encoded characters in a string.  For example `(w3-unhex-string
  498.      "this%20is%20a%20test")' would return `"this is a test"'.
  499. `w3-upcase-region'
  500.      This function takes a start and end position in the current buffer
  501.      as its arguments, and converts all the text to uppercase, except
  502.      for text between < and >, and it also ignores HTML[+] entity
  503.      references (e.g., `<').  This is useful for converting regions
  504.      to uppercase without corrupting any URLs within it.
  505. `w3-view-this-url'
  506.      This function returns the URL of the zone under point (if no zone
  507.      is under point, then it returns `nil').  If the optional argument
  508.      is `nil', then the URL is also displayed in the minibuffer.
  509. `url-view-url'
  510.      This function returns the URL of current document.  If the optional
  511.      argument is `nil', then the URL is also displayed in the
  512.      minibuffer.
  513. File: w3,  Node: MIME functions,  Next: Concept Index,  Prev: Miscellaneous Functions,  Up: Programming Interface
  514. MIME Functions
  515. ==============
  516. `mm-compose-type(TYPE)'
  517.      Compose a body section of MIME-type TYPE.  This uses the compose
  518.      field of a mailcap entry to generate the data, and returns a
  519.      string that contains the data, with a correct content-type header.
  520. `mm-extension-to-mime(EXTN)'
  521.      Return the MIME content-type of the file extension EXTN
  522. `mm-mime-info(ST ND REQUEST)'
  523.      Get the mime viewer command for a specific MIME type.  If ST is a
  524.      number, then the MIME type is the `buffer-substring' between ST
  525.      and ND, otherwise ST should be a string specifying the MIME type
  526.      and associated data.  Returns `nil' if the specified type is not
  527.      found.  Expects a complete content-type header line as its
  528.      argument.  This can be simple like text/html, or complex like
  529.      text/plain; charset=blah; foo=bar
  530.      Third argument REQUEST specifies what information to return.  If
  531.      it is `nil' or the empty string, the viewer (second field of the
  532.      mailcap entry) is returned.  If it is a string, then the mailcap
  533.      field corresponding to that string is returned (print,
  534.      description, whatever).  If a number, then all the information for
  535.      this specific viewer is returned.
  536. `mm-parse-mailcap(FILE)'
  537.      Parse the mailcap file specified by FILE.
  538. `mm-parse-mailcaps(PATH)'
  539.      Parse the default mailcap files.  Optional argument PATH specifies
  540.      a UNIX-style path of where to find the mailcap files.  This
  541.      function must be run before the rest of the mm-* functions.
  542. `mm-parse-mimetype-file(FILE)'
  543.      Parse out a mime-types file specified by FILE.
  544. `mm-parse-mimetypes(PATH)'
  545.      Parse the default mimetypes files.  Optional argument PATH
  546.      specifies a UNIX-style path of where to find the mimetypes files.
  547. File: w3,  Node: Concept Index,  Next: Key Index,  Prev: MIME functions,  Up: Top
  548. Concept Index
  549. *************
  550. * Menu:
  551. * Annotations:                          Annotations.
  552. * ASK blocks:                           General Formatting.
  553. * Broken SUN libc:                      Firewalls.
  554. * Can't resolve hostnames:              Firewalls.
  555. * Colors:                               Controlling Formatting.
  556. * Completion of URLs:                   Global History.
  557. * Connections hanging with lemacs & solaris: Firewalls.
  558. * Creating an HTTP request:             Miscellaneous Functions.
  559. * Creating w3-emacs19-hack-XXX functions: Smart terminals.
  560. * Customizing formatting:               Controlling Formatting.
  561. * Depth-first search:                   Searching.
  562. * Emacs 19.22 on terminals:             Smart terminals.
  563. * Encryption:                           Using PGP/PEM.
  564. * Faulty hostname resolvers:            Firewalls.
  565. * Firewalls:                            Firewalls.
  566. * Fonts:                                Controlling Formatting.
  567. * Forms based searching:                Basic Setup.
  568. * Gateways:                             Firewalls.
  569. * GNUS:                                 Interfacing to GNUS.
  570. * Gopher+:                              Basic Setup.
  571. * Gopher+:                              General Formatting.
  572. * Group Annotations:                    Group Annotations.
  573. * Hair-pulling gateway-headaches:       Firewalls.
  574. * Highlighting on new terminals:        Smart terminals.
  575. * Highlighting on terminals:            Smart terminals.
  576. * History Lists:                        Session History.
  577. * Hooks:                                Hooks.
  578. * Host-based gateways:                  Firewalls.
  579. * HTML+:                                Markup Languages Supported.
  580. * Images:                               Inlined images.
  581. * Inlined images:                       Inlined images.
  582. * Inlined MPEGs:                        Inlined images.
  583. * Interfacing to GNUS:                  Interfacing to GNUS.
  584. * Interfacing to RMAIL:                 Interfacing to RMAIL.
  585. * Interfacing to VM:                    Interfacing to VM.
  586. * Internals of Emacs-w3:                Programming Interface.
  587. * ISINDEX handling:                     Basic Setup.
  588. * Lucid Emacs & Solaris network problems: Firewalls.
  589. * Mailcrypt:                            Using PGP/PEM.
  590. * mime-types file:                      Adding MIME types based on file extensions.
  591. * Movies:                               Inlined images.
  592. * MPEGs:                                Inlined images.
  593. * Netpbm:                               Inlined images.
  594. * Network Protocols:                    Supported Protocols.
  595. * Newsgroups:                           More Help.
  596. * NeXTstep resources:                   Graphics workstations.
  597. * Pbmplus:                              Inlined images.
  598. * Personal Annotations:                 Personal Annotations.
  599. * PGP:                                  Using PGP/PEM.
  600. * Pretty Good Privacy:                  Using PGP/PEM.
  601. * Protocols Supported:                  Supported Protocols.
  602. * Public Key Cryptography:              Using PGP/PEM.
  603. * Recursive searching:                  Searching.
  604. * Relevant Newsgroups:                  More Help.
  605. * Retrieving Emacs-w3:                  Setting Up.
  606. * RIPEM:                                Using PGP/PEM.
  607. * RMAIL:                                Interfacing to RMAIL.
  608. * Searching more than one node:         Searching.
  609. * Searching with forms:                 Basic Setup.
  610. * Security:                             Using PGP/PEM.
  611. * Setting Up Emacs-w3:                  Setting Up.
  612. * Solaris networking problems:          Firewalls.
  613. * Specifying Fonts:                     Controlling Formatting.
  614. * Support:                              More Help.
  615. * Supported Protocols:                  Supported Protocols.
  616. * TERM:                                 Firewalls.
  617. * Text highlighting on terminals:       Smart terminals.
  618. * Usefulness of global history:         Global History.
  619. * Usenet meets Emacs-w3:                Interfacing to GNUS.
  620. * Using Emacs-w3 from your own programs: Programming Interface.
  621. * Using Emacs-w3 with RMAIL:            Interfacing to RMAIL.
  622. * Using Emacs-w3 with VM:               Interfacing to VM.
  623. * Using GNUS and Emacs-w3:              Interfacing to GNUS.
  624. * VM:                                   Interfacing to VM.
  625. * VTx00 terminals:                      Smart terminals.
  626. * World Wide Web:                       Introduction.
  627. * Xresources:                           Graphics workstations.
  628. File: w3,  Node: Key Index,  Next: Command Index,  Prev: Concept Index,  Up: Top
  629. Key Index
  630. *********
  631. * Menu:
  632. * <:                                    Movement.
  633. * >:                                    Movement.
  634. * a:                                    Hotlist Handling.
  635. * B:                                    Action.
  636. * b:                                    Movement.
  637. * button2:                              Action.
  638. * C-button2:                            Action.
  639. * C-c C-b:                              Action.
  640. * C-k:                                  Information.
  641. * C-o:                                  Action.
  642. * d:                                    Hotlist Handling.
  643. * DEL:                                  Movement.
  644. * F:                                    Action.
  645. * f:                                    Movement.
  646. * g:                                    Action.
  647. * H:                                    Movement.
  648. * H:                                    Hotlist Handling.
  649. * k:                                    Information.
  650. * K:                                    Information.
  651. * l:                                    Action.
  652. * m:                                    Movement.
  653. * m:                                    Action.
  654. * M-M:                                  Miscellaneous.
  655. * M-m:                                  Miscellaneous.
  656. * M-return:                             Action.
  657. * M-s:                                  Action.
  658. * M-tab:                                Miscellaneous.
  659. * M-x w3-hotlist-refresh:               Hotlist Handling.
  660. * M-x w3-insert-formatted-url:          Miscellaneous.
  661. * n:                                    Movement.
  662. * o:                                    Action.
  663. * p:                                    Miscellaneous.
  664. * P:                                    Miscellaneous.
  665. * Q:                                    Action.
  666. * q:                                    Action.
  667. * r:                                    Action.
  668. * return:                               Action.
  669. * s:                                    Information.
  670. * S:                                    Information.
  671. * SPC:                                  Movement.
  672. * U:                                    Miscellaneous.
  673. * V:                                    Information.
  674. * v:                                    Information.
  675. File: w3,  Node: Command Index,  Next: Variable Index,  Prev: Key Index,  Up: Top
  676. Command Index
  677. *************
  678. * Menu:
  679. * lpr-buffer:                           Miscellaneous.
  680. * mm-parse-mimetypes:                   Adding MIME types based on file extensions.
  681. * scroll-down:                          Movement.
  682. * scroll-up:                            Movement.
  683. * system-name:                          Basic Setup.
  684. * url-create-mime-request:              Miscellaneous Functions.
  685. * url-get-url-at-point:                 Miscellaneous Functions.
  686. * url-open-stream:                      Miscellaneous Functions.
  687. * url-retrieve:                         Miscellaneous Functions.
  688. * url-view-url:                         Information.
  689. * url-view-url:                         Miscellaneous Functions.
  690. * user-real-login-name:                 Basic Setup.
  691. * w3-add-personal-annotation:           Personal Annotations.
  692. * w3-add-zone:                          Generalized ZONES.
  693. * w3-all-zones:                         Generalized ZONES.
  694. * w3-back-link:                         Movement.
  695. * w3-backward-in-history:               Session History.
  696. * w3-backward-in-history:               Action.
  697. * w3-buffer-visiting:                   Miscellaneous Functions.
  698. * w3-clear-tmp-buffer:                  Miscellaneous Functions.
  699. * w3-complete-link:                     Movement.
  700. * w3-complete-link:                     Action.
  701. * w3-convert-html-to-latex:             Miscellaneous Functions.
  702. * w3-delete-personal-annotation:        Personal Annotations.
  703. * w3-delete-zone:                       Generalized ZONES.
  704. * w3-emacs19-hack-TERMINAL:             Smart terminals.
  705. * w3-emacs19-unhack-faces:              Smart terminals.
  706. * w3-end-of-document:                   Movement.
  707. * w3-fetch:                             Miscellaneous Functions.
  708. * w3-fetch:                             Action.
  709. * w3-fetch:                             Session History.
  710. * w3-fix-entities-in-string:            Miscellaneous Functions.
  711. * w3-follow-inlined-image:              Data Structures.
  712. * w3-follow-inlined-image:              Action.
  713. * w3-follow-link:                       Action.
  714. * w3-follow-mouse:                      Action.
  715. * w3-forward-in-history:                Session History.
  716. * w3-forward-in-history:                Action.
  717. * w3-forward-link:                      Movement.
  718. * w3-generate-new-buffer-name:          Miscellaneous Functions.
  719. * w3-generate-unique-filename:          Miscellaneous Functions.
  720. * w3-goto-last-buffer:                  Action.
  721. * w3-hexify-string:                     Miscellaneous Functions.
  722. * w3-hide-zone:                         Generalized ZONES.
  723. * w3-hotlist-add-document:              Hotlist Handling.
  724. * w3-hotlist-delete:                    Hotlist Handling.
  725. * w3-hotlist-refresh:                   Hotlist Handling.
  726. * w3-hotlist-rename-entry:              Hotlist Handling.
  727. * w3-insert-entities-in-string:         Miscellaneous Functions.
  728. * w3-insert-formatted-url:              Miscellaneous.
  729. * w3-insert-this-url:                   Miscellaneous.
  730. * w3-leave-buffer:                      Action.
  731. * w3-mail-current-document:             Miscellaneous.
  732. * w3-mail-document-under-point:         Miscellaneous.
  733. * w3-open-local:                        Action.
  734. * w3-print-this-url:                    Miscellaneous.
  735. * w3-print-url-under-point:             Miscellaneous.
  736. * w3-quit:                              Action.
  737. * w3-reload-document:                   Action.
  738. * w3-save-this-url:                     Information.
  739. * w3-save-url:                          Information.
  740. * w3-search:                            Action.
  741. * w3-show-history:                      Session History.
  742. * w3-show-history-list:                 Action.
  743. * w3-show-hotlist:                      Movement.
  744. * w3-show-hotlist:                      Hotlist Handling.
  745. * w3-source-document:                   Information.
  746. * w3-source-document-at-point:          Information.
  747. * w3-start-of-document:                 Movement.
  748. * w3-unhex-string:                      Miscellaneous Functions.
  749. * w3-unhide-zone:                       Generalized ZONES.
  750. * w3-upcase-region:                     Character based terminals.
  751. * w3-upcase-region:                     Miscellaneous Functions.
  752. * w3-use-hotlist:                       Hotlist Handling.
  753. * w3-use-hotlist:                       Movement.
  754. * w3-use-links:                         Miscellaneous.
  755. * w3-view-this-url:                     Miscellaneous Functions.
  756. * w3-view-this-url:                     Information.
  757. * w3-zone-at:                           Generalized ZONES.
  758. * w3-zone-data:                         Generalized ZONES.
  759. * w3-zone-data:                         Generalized ZONES.
  760. * w3-zone-end:                          Generalized ZONES.
  761. * w3-zone-eq:                           Generalized ZONES.
  762. * w3-zone-hidden-p:                     Generalized ZONES.
  763. * w3-zone-start:                        Generalized ZONES.
  764. * window-width:                         Basic Setup.
  765. File: w3,  Node: Variable Index,  Prev: Command Index,  Up: Top
  766. Variable Index
  767. **************
  768. * Menu:
  769. * fill-column:                          General Formatting.
  770. * lpr-command:                          Miscellaneous.
  771. * lpr-switches:                         Miscellaneous.
  772. * mm-mime-data:                         Specifying Viewers.
  773. * mm-mime-extensions:                   Adding MIME types based on file extensions.
  774. * tab-stop-list:                        General Formatting.
  775. * tab-width:                            General Formatting.
  776. * url-bad-port-list:                    Basic Setup.
  777. * url-bad-server-list:                  Miscellaneous Functions.
  778. * url-be-asynchronous:                  Basic Setup.
  779. * url-current-server:                   Miscellaneous Functions.
  780. * url-gateway-handholding-login-regexp: Firewalls.
  781. * url-gateway-handholding-password-regexp: Firewalls.
  782. * url-gateway-host:                     Firewalls.
  783. * url-gateway-host-password:            Firewalls.
  784. * url-gateway-host-program:             Firewalls.
  785. * url-gateway-host-program:             Firewalls.
  786. * url-gateway-host-program-ready-regexp: Firewalls.
  787. * url-gateway-host-prompt-pattern:      Firewalls.
  788. * url-gateway-host-username:            Firewalls.
  789. * url-gateway-local-host-regexp:        Firewalls.
  790. * url-gateway-method:                   Firewalls.
  791. * url-gateway-program-interactive:      Firewalls.
  792. * url-gateway-telnet-program:           Firewalls.
  793. * url-gateway-telnet-ready-regexp:      Firewalls.
  794. * url-global-history-file:              Basic Setup.
  795. * url-global-history-file:              Global History.
  796. * url-keep-history:                     Global History.
  797. * url-keep-history:                     Session History.
  798. * url-mime-accept-string:               Miscellaneous Functions.
  799. * url-passwd-entry-func:                Other Variables.
  800. * url-personal-mail-address:            Basic Setup.
  801. * url-pgp/pem-entity:                   Basic Setup.
  802. * url-request-data:                     Miscellaneous Functions.
  803. * url-request-extra-headers:            Miscellaneous Functions.
  804. * url-request-method:                   Miscellaneous Functions.
  805. * url-show-status:                      Other Variables.
  806. * url-uncompressor-alist:               Other Variables.
  807. * url-use-hypertext-dired:              General Formatting.
  808. * url-use-hypertext-dired:              Action.
  809. * url-use-hypertext-gopher:             Basic Setup.
  810. * url-wais-gateway-port:                Basic Setup.
  811. * url-wais-gateway-server:              Basic Setup.
  812. * url-waisq-prog:                       Other Variables.
  813. * url-xterm-command:                    Basic Setup.
  814. * w3-allow-searching-of:                Searching.
  815. * w3-annotation-mode:                   Personal Annotations.
  816. * w3-color-filter:                      Inlined images.
  817. * w3-color-max-blue:                    Inlined images.
  818. * w3-color-max-green:                   Inlined images.
  819. * w3-color-max-red:                     Inlined images.
  820. * w3-color-use-reducing:                Inlined images.
  821. * w3-confirmation-func:                 Basic Setup.
  822. * w3-current-file:                      Global Variables.
  823. * w3-current-last-buffer:               Global Variables.
  824. * w3-current-mime-headers:              Global Variables.
  825. * w3-current-port:                      Global Variables.
  826. * w3-current-server:                    Global Variables.
  827. * w3-current-type:                      Global Variables.
  828. * w3-default-action:                    Basic Setup.
  829. * w3-default-homepage:                  Basic Setup.
  830. * w3-delay-image-loads:                 Basic Setup.
  831. * w3-delimit-emphasis:                  Basic Setup.
  832. * w3-delimit-emphasis:                  Character based terminals.
  833. * w3-delimit-links:                     Basic Setup.
  834. * w3-delimit-links:                     General Formatting.
  835. * w3-emacs19-hack-faces-p:              Smart terminals.
  836. * w3-file-prepare-hooks:                General Formatting.
  837. * w3-gopher-labels:                     General Formatting.
  838. * w3-graphic-converter-alist:           Inlined images.
  839. * w3-header-chars-assoc:                Character based terminals.
  840. * w3-horizontal-rule-char:              General Formatting.
  841. * w3-hotlist-file:                      Hotlist Handling.
  842. * w3-hotlist-file:                      Hotlist Handling.
  843. * w3-hotlist-file:                      Hotlist Handling.
  844. * w3-hotlist-file:                      Basic Setup.
  845. * w3-hotlist-file:                      Hotlist Handling.
  846. * w3-html-entities:                     Miscellaneous Functions.
  847. * w3-html2latex-args:                   Miscellaneous.
  848. * w3-html2latex-prog:                   Miscellaneous.
  849. * w3-icon-directory-list:               Other Variables.
  850. * w3-keep-history:                      Action.
  851. * w3-keep-old-buffers:                  Other Variables.
  852. * w3-latex-docstyle:                    Miscellaneous.
  853. * w3-link-end-delimiter:                General Formatting.
  854. * w3-link-start-delimiter:              General Formatting.
  855. * w3-list-chars-assoc:                  General Formatting.
  856. * w3-load-hooks:                        Hooks.
  857. * w3-personal-annotation-directory:     Personal Annotations.
  858. * w3-personal-annotation-directory:     Basic Setup.
  859. * w3-print-commnad:                     Miscellaneous.
  860. * w3-reuse-buffers:                     Other Variables.
  861. * w3-right-border:                      Basic Setup.
  862. * w3-right-border:                      General Formatting.
  863. * w3-running-epoch:                     Global Variables.
  864. * w3-running-FSF19:                     Global Variables.
  865. * w3-running-lemacs:                    Global Variables.
  866. * w3-running-new-lucid:                 Global Variables.
  867. * w3-show-headers:                      Other Variables.
  868. * w3-show-status:                       Other Variables.
  869. * w3-style-assoc:                       Graphics workstations.
  870. * w3-style-chars-assoc:                 Character based terminals.
  871. * w3-style-chars-assoc:                 Basic Setup.
  872. * w3-track-mouse:                       Basic Setup.
  873. * w3-use-forms-index:                   Basic Setup.
  874. * w3-use-html2latex:                    Miscellaneous.
  875. * w3-use-hypertext-gopher:              General Formatting.
  876. * w3-working-buffer:                    Miscellaneous Functions.
  877.